#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//定义链表结点的结构
typedef int SLTDatatype;
typedef struct SLTNode{
    SLTDatatype x;
    struct SLTNode* next;
}SLTNode;
//链表打印函数
void SLTPrint(SLTNode* phead);
//申请新结点
SLTNode* SLTBuyNode(SLTDatatype x);
//尾插
void SLTPushBack(SLTNode** pphead,SLTDatatype x);
//头插
void SLTPushFront(SLTNode** pphead,SLTDatatype x);
//尾删
void SLTPopBack(SLTNode** pphead);
//头删
void SLTPopFront(SLTNode** pphead);
//查找
SLTNode* SLTFind(SLTNode* phead,SLTDatatype x);
//在指定位置之前插入数据
void SLTInsert(SLTNode** pphead,SLTNode* pos,SLTDatatype x);
//在指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos,SLTDatatype x);
//删除指定位置的数据
void SLTErase(SLTNode** pphead,SLTNode* pos);
//删除指定位置之后的数据
void SLTEraseAfter(SLTNode* pos);
//销毁整个链表
void SLTDestroy(SLTNode** pphead);
